home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / misc / setspace.sty < prev    next >
Text File  |  1995-03-09  |  13KB  |  310 lines

  1. %%% ======================================================================
  2. %%%  @LaTeX-style-file{
  3. %%%     filename        = "setspace.sty",
  4. %%%     version         = "3.1",
  5. %%%     date            = "25 May 1994",
  6. %%%     time            = "10:21:09.67 CDT",
  7. %%%     author          = "George D. Greenwade",
  8. %%%     address         = "Department of Economics and Business Analysis
  9. %%%                        College of Business Administration
  10. %%%                        P. O. Box 2118
  11. %%%                        Sam Houston State University
  12. %%%                        Huntsville, Texas, USA 77341-2118",
  13. %%%     email           = "bed_gdg@SHSU.edu (Internet)
  14. %%%                        BED_GDG@SHSU     (BITNET)
  15. %%%                        SHSU::BED_GDG    (THENET)",
  16. %%%     telephone       = "(409) 294-1266",
  17. %%%     FAX             = "(409) 294-3712",
  18. %%%     supported       = "yes",
  19. %%%     archived        = "SHSU*",
  20. %%%     keywords        = "LaTeX style, spacing, doublespace, half spacing,
  21. %%%                        modifications to original",
  22. %%%     codetable       = "ISO/ASCII",
  23. %%%     checksum        = "14962 309 1381 13018",
  24. %%%     docstring       = "This is a very quick hack to get setspace.sty
  25. %%%                        to work with LaTeX2e as well as 2.09 with and
  26. %%%                        without NFSS -- but it does work on the small 
  27. %%%                        test I've run.  Comments welcome!
  28. %%%                        
  29. %%%                        The primitive logic is that we can test for
  30. %%%                        the existence the definition of
  31. %%%                        \selectfont -- not in LaTeX 2.09 without NFSS
  32. %%%                         (prior toggle -- version 2.x)
  33. %%%                        \@newbaseline -- defined in NFSS but not in
  34. %%%                           LaTeX 2e (current toggle -- version 3.0)
  35. %%%                        
  36. %%%                        This is a modification to Erica Harris'
  37. %%%                        setspace.sty.  The main aspects of this
  38. %%%                        modification deal with the definitions of
  39. %%%                        \doublespacing, \onehalfspacing, and
  40. %%%                        \singlespacing (these are near the beginning of
  41. %%%                        the file).  Primarily, these deal with adding
  42. %%%                        fontsize changes to guarantee that the new
  43. %%%                        baseline is properly defined and placed into
  44. %%%                        action.  The extra \vskip in the definition of
  45. %%%                        \singlespacing seems to  make for a cleaner
  46. %%%                        transition from multiple spacing back to single
  47. %%%                        spacing.  These did not appear warrranted for
  48. %%%                        other size changes.
  49. %%%
  50. %%%                        Modified by GDG on November 1, 1992, to allow
  51. %%%                        for use of New Font Selection Scheme.
  52. %%%
  53. %%%                        Modified by GDG on June 4, 1993, to correct
  54. %%%                        for spacing tokens in defintion of \@setsize
  55. %%%                        Thanks to Kaja P. Christiansen <kaja@daimi.aau.dk>
  56. %%%                        for the fix!!
  57. %%%
  58. %%%                        Modified by GDG on May 24, 1994, to change toggle
  59. %%%                        definition from \selectfont to \@newbaseline.
  60. %%%
  61. %%%                        Modified by GDG on May 25, 1994, to add
  62. %%%                        definition of \everydisplay -- this part of
  63. %%%                        the code was apparently written by Geoffrey
  64. %%%                        Tobin on Thu 23 Jan 1992 and was provided by
  65. %%%                        stanton@haas.berkeley.edu (Richard Stanton). 
  66. %%%                        This should help with some of the awkward math
  67. %%%                        placements in changing spacings.
  68. %%%
  69. %%%                        The original headers of the main file cover the
  70. %%%                        major aspects of this file and its use.
  71. %%%
  72. %%%                        The checksum field above contains a CRC-16
  73. %%%                        checksum as the first value, followed by the
  74. %%%                        equivalent of the standard UNIX wc (word
  75. %%%                        count) utility output of lines, words, and
  76. %%%                        characters.  This is produced by Robert
  77. %%%                        Solovay's checksum utility."
  78. %%% }
  79. %%% ======================================================================
  80. %% FILE:   setspace.sty in SYS2.TEX.PUB.ISULATEX.STYLES
  81. %% AUTHOR: Erica M. S. Harris
  82. %% DATE:   April 1990
  83. %% MOD:    March 1991
  84. %% DESCR:  LaTeX Document style option "setspace"
  85. %%         Usage:  \documentstyle[...,setspace,...]{...}
  86. %%         Based on the doublespace option created by Stephen Page.
  87. %%
  88. %%         This style option provides commands and environments for doing
  89. %%         double and  one-and-a-half spacing based on pt size.
  90. %%
  91. %%         Single spacing is the default.
  92. %%
  93. %%         Three commands, \doublespacing, \onehalfspacing, and
  94. %%         \singlespacing, are for use in the preamble to set the overall
  95. %%         spacing for the document.  If a different spacing is required then
  96. %%         the \setstretch{baselinestretch} command can be used in the
  97. %%         preamble to set the baselinestretch appropriately.  The default
  98. %%         spacing with this style option is single spacing.
  99. %%
  100. %%         Three environments, singlespace, onehalfspace, and doublespace,
  101. %%         allow the spacing to be changed within the document.  Both the
  102. %%         onehalfspace and doublespace environments are intended to increase
  103. %%         the spacing, so the onehalfspace environment should not be used in
  104. %%         a double spaced document.  If an increased spacing different from
  105. %%         one-and-a-half or double spacing is required then the spacing
  106. %%         environment can be used.  The spacing environment takes one
  107. %%         argument which is the larger baselinestretch to use,
  108. %%         e.g., \begin{spacing}{2.5}.
  109. %%
  110. %%         \footins is adjusted the same as \parskip - appears to work. Lose
  111. %%         stretch parts but don't consider that to be crucial
  112. %%
  113. %%         Removed code for altering spacing before and after displayed
  114. %%         equations - just looked too much.
  115. %%
  116. %% MODS:
  117. %%         Redefinition of \spacing and \endspacing for consistency with
  118. %%         TeX 3.x inserted by George Greenwade.  Modification provided by
  119. %%         Philip Ross (ROSS@UK.AC.ABDN.BIOMED) and John Byrne via INFO-TeX.
  120. %%
  121. %% PLEASE REPORT ANY BUGS
  122. %%
  123. %%   Old Documentation follows:
  124. %%         1. A new environment "singlespace" is provided, within which single
  125. %%            spacing will apply.
  126. %%            JFL - changed so that it works in regular text and so that
  127. %%            vertical space before and after is correctly computed
  128. %%         2. Double spacing is turned off within footnotes and floats (figures
  129. %%            and tables).
  130. %%         3. Proper double spacing happens below tabular environments and in
  131. %%            other places where LaTeX uses a strut.
  132. %%         4. Slightly more space is inserted before footnotes.
  133. %%         5. JFL - fixes spacing before and after displayed math
  134. %%
  135. %%
  136. %%    mods:   Jean-Francois Lamy
  137. %%            lamy@ai.toronto.edu
  138. %%            lamy@utai.uucp
  139. %%
  140. %% POSSIBLE BUGS:
  141. %%    . Increasing struts may possibly cause some other obscure part of
  142. %%      formatting to fall over.
  143. %%    . \begin{singlespace}\begin{quote} produces the wrong spacing before
  144. %%      the quote (extra glue is inserted).
  145. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  146.  
  147. \def\doublespacing{\ifcase \@ptsize \relax % 10pt
  148.     \def\baselinestretch{1.667}
  149.   \or % 11pt
  150.     \def\baselinestretch{1.618}
  151.   \or % 12pt
  152.     \def\baselinestretch{1.655}
  153.   \fi
  154.  \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  155.   \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
  156.  \else% NFSS (2.09) present
  157.   \@newbaseline%
  158. \fi%
  159. }
  160.  
  161. \def\onehalfspacing{\ifcase \@ptsize \relax % 10pt
  162.     \def\baselinestretch{1.25}
  163.   \or % 11pt
  164.     \def\baselinestretch{1.213}
  165.   \or % 12pt
  166.     \def\baselinestretch{1.241}
  167.   \fi
  168.  \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  169.   \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
  170.  \else% NFSS (2.09) present
  171.   \@newbaseline%
  172. \fi%
  173. }
  174.  
  175. \def\singlespacing{\def\baselinestretch{1}
  176.  \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  177.   \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
  178.  \else% NFSS (2.09) present
  179.   \@newbaseline%
  180. \fi%
  181.   \vskip\baselineskip% Correction for coming into singlespace
  182. }
  183.  
  184. \def\setstretch#1{\renewcommand{\baselinestretch}{#1}}
  185.  
  186. %---Stretch the baseline BEFORE calculating the strut size. This improves
  187. %   spacing below tabular environments etc., probably...
  188. %   Comments are welcomed.
  189.  
  190. \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  191. \def\@setsize#1#2#3#4{\@nomath#1%--modified 1993.04.07--GDG per KPC
  192.    \let\@currsize#1\baselineskip
  193.    #2\baselineskip\baselinestretch\baselineskip
  194.    \parskip\baselinestretch\parskip
  195.    \setbox\strutbox\hbox{\vrule height.7\baselineskip
  196.       depth.3\baselineskip width\z@}%
  197.    \skip\footins \baselinestretch\skip\footins
  198.    \normalbaselineskip\baselineskip#3#4}
  199. \else% NFSS (2.09) present
  200. \def\@newbaseline{\setnew@baselineskip
  201.     \baselineskip\baselinestretch\baselineskip
  202.     \setbox\strutbox\hbox{\vrule\@height.7\baselineskip
  203.     \@depth.3\baselineskip \@width\z@}%
  204.     \normalbaselineskip\baselineskip}%
  205. \fi%
  206.  
  207. %---Increase the space between last line of text and footnote rule.
  208. %\skip\footins 20pt plus4pt minus4pt
  209.  
  210. %---Reset baselinestretch within footnotes and floats.
  211.  
  212. \def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
  213.    \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
  214.       \@parmoderr\@floatpenalty\z@
  215.     \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
  216.        \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
  217.        \@tfor \@tempa :=#2\do
  218.                         {\if\@tempa h\advance\@tempcnta \@ne\fi
  219.                          \if\@tempa t\advance\@tempcnta \tw@\fi
  220.                          \if\@tempa b\advance\@tempcnta 4\relax\fi
  221.                          \if\@tempa p\advance\@tempcnta 8\relax\fi
  222.          }\global\count\@currbox\@tempcnta}\@fltovf\fi
  223.     \global\setbox\@currbox\vbox\bgroup
  224.     \def\baselinestretch{1}\@normalsize
  225.     \boxmaxdepth\z@
  226.     \hsize\columnwidth \@parboxrestore}
  227.  
  228. \long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize
  229.     \interlinepenalty\interfootnotelinepenalty
  230.     \splittopskip\footnotesep
  231.     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
  232.     \hsize\columnwidth \@parboxrestore
  233.    \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
  234.     {\rule{\z@}{\footnotesep}\ignorespaces
  235.       #1\strut}}}
  236.  
  237. % A single spaced quote (say) is done by surrounding singlespace with quote.
  238. %
  239. \def\singlespace{%
  240. \vskip\baselineskip%
  241. \def\baselinestretch{1}%
  242. \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  243. \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
  244.  \else% NFSS (2.09) present
  245.   \@newbaseline%
  246. \fi%
  247. \vskip-\baselineskip}
  248.  
  249. \def\endsinglespace{\par}
  250.  
  251. %  spacing, doublespace and onehalfspace all are meant to INCREASE the
  252. %  spacing (i.e. calling onehalfspace from within doublespace will not
  253. %  produce a graceful transition between spacings)
  254. %
  255. % Next two definitions fixed for consistency with TeX 3.x
  256. \def\spacing#1{\par%
  257.  \begingroup             % moved from \endspacing by PGBR 29-1-91
  258.  \def\baselinestretch{#1}%
  259. \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
  260.  \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
  261.  \else% NFSS (2.09) present
  262.   \@newbaseline%
  263. \fi%
  264. }
  265.  
  266. \def\endspacing{\par%
  267.  \vskip \parskip%
  268.  \vskip \baselineskip%
  269.  \endgroup%
  270.  \vskip -\parskip%
  271.  \vskip -\baselineskip}
  272.  
  273. % one and a half spacing is 1.5 x pt size
  274. \def\onehalfspace{\ifcase \@ptsize \relax  % 10pt
  275.      \spacing{1.25}
  276.    \or % 11pt
  277.      \spacing{1.213}
  278.    \or % 12pt
  279.      \spacing{1.241}
  280.    \fi}
  281. \let\endonehalfspace=\endspacing
  282.  
  283. % double spacing is 2 x pt size
  284. \def\doublespace{\ifcase \@ptsize \relax % 10pt
  285.     \spacing{1.667}
  286.   \or % 11pt
  287.     \spacing{1.618}
  288.   \or % 12pt
  289.     \spacing{1.655}
  290.   \fi}
  291. \let\enddoublespace=\endspacing
  292.  
  293. % gt - EMSH chose to omit display math part that follows.
  294. % She wrote (see above) that the "altered spacing before and after displayed
  295. % equations ... just looked too much".
  296. %
  297. % Fix up spacing before and after displayed math
  298. % (arraystretch seems to do a fine job for inside LaTeX displayed math,
  299. % since array and eqnarray seem to be affected as expected).
  300. % Changing \baselinestretch and doing a font change also works if done here,
  301. % but then you have to change @setsize to remove the call to @nomath)
  302. %
  303. \everydisplay{
  304.   \abovedisplayskip \baselinestretch\abovedisplayskip%
  305.   \belowdisplayskip \abovedisplayskip%
  306.   \abovedisplayshortskip \baselinestretch\abovedisplayshortskip%
  307.   \belowdisplayshortskip \baselinestretch\belowdisplayshortskip}
  308.  
  309. \endinput
  310.